package com.leet.string;

import java.util.Stack;

public class Calculate {
    public int calculate(String s) {
        // 先后（数字），再前符号，然后push/pop
        Stack<Integer> stack = new Stack<>();
        int ans = 0;
        char operator = '+';
        int num = 0;
        for(int i = 0 ; i < s.length(); i++){
            char tmp = s.charAt(i);
            if(tmp >= '0'){
                num = num*10 + tmp-'0';
            }
            // 最后一个位置需要加上判断，前一个符号（奇怪了）
            if((tmp<'0' && tmp!=' ')||i == s.length()-1){
                // 遇到新的符号，才判断上一个符号
                switch (operator){
                    case '+': stack.push(num);break;
                    case '-': stack.push(-num);break;
                    case '*': stack.push(stack.pop()*num);break;
                    case '/': stack.push(stack.pop()/num);break;
                }
                // 记录新的符号，num记为0
                operator = tmp;
                num = 0;
            }
        }
        while (!stack.isEmpty()){
            ans += stack.pop();
        }
        return ans;
    }
}
